Streaming media systems transmit media data, such as video and audio data, in data packets over wired and/or wireless networks. Due to constraints on available bandwidth, for example, some data packets transmitted over a network can experience delays along the way, perhaps arriving late at a destination node. Also, some data packets may be lost along the way.
The effects of late or lost data packets may be exacerbated for video data that are predictively encoded (compressed). Predictive encoding introduces dependencies in the encoded data that improve the amount of compression but can also result in error propagation in the event of data packet loss or late arrival.
Video frames are preferably received before their display (playback) times. With predictive encoding, the decoding of a frame of data may rely on the information in another frame, and therefore some frames need to be received earlier than their display time so that they can be used to decode other frames. For example, with MPEG (Moving Pictures Experts Group) encoding, a P-frame is predicted from a preceding P-frame or I-frame, and a B-frame is predicted from two P-frames or an I-frame and P-frame.
Encoded video frames that do not arrive or that arrive late at the decoder (e.g., a client or destination node) will not only miss their respective display deadlines, but they may also prevent a number of other, subsequent frames from being displayed properly. Thus, a number of frames may be prevented from being properly decoded and displayed due to a single late or missing frame, depending on the particular coding dependencies of the late or missing frame. This can affect the overall quality of the display.
Video transcoding offers one solution that allows encoded data to be adapted to accommodate available bandwidth and packet losses. A transcoder takes a compressed, or encoded, data stream as an input, and then processes it to produce another encoded data stream as an output. Examples of transcoding operations include bit rate reduction, rate shaping, spatial downsampling, and frame rate reduction. Transcoding can improve system scalability and efficiency, for example, by adapting the spatial resolution of an image to a particular client's display capabilities or by dynamically adjusting the bit rate of a data stream to match a network channel's time-varying characteristics.
While network transcoding facilitates scalability in data delivery systems, it also presents a number of challenges. The process of transcoding can place a substantial computational load on transcoding nodes. While computationally efficient transcoding algorithms have been developed, they may not be well-suited for processing hundreds or thousands of streams at intermediate network nodes.
Furthermore, transcoding poses a threat to the security of the delivery system because conventional transcoding operations require that an encrypted stream be decrypted before transcoding. The transcoded result is re-encrypted but is decrypted at the next transcoder. Each transcoder thus presents a possible breach in the security of the system. This is not an acceptable situation when end-to-end security is required.
Accordingly, a method and/or system that can allow scaling (e.g., transcoding) of data in a secure and computationally efficient manner would be advantageous. The present invention provides these as well as other advantages.